И. Шагурин
Компания Motorola сохраняет
лидерство в производстве
микроконтроллеров, обеспечив в 1997
году 17% их общемирового выпуска.
Основной объем производства
составляют 8-разрядные
микроконтроллеры семейств 68HC05/705 и
68HC11/711, которые выпускаются с
масочно-программируемым (68HC05, 68HC11)
или электрически-программируемым
(68HC705, 68HC711) внутренним ПЗУ программ.
Описание этих микроконтроллеров, а
также других семейств
микропроцессоров и
микроконтроллеров компании Motorola
дано в монографии [1].
Семейство 68HC05/705,
ориентированное на применение в
изделиях массового потребления,
отличается широкой номенклатурой
выпускаемых моделей (более 200 типов)
и большими объемами выпуска (к 1998
году было продано более 2,5 млрд
экземпляров). Однако до последнего
времени основную долю выпуска
составляли микроконтроллеры с
масочно-программируемым ПЗУ,
которые экономически невыгодно
использовать в изделиях малой и
средней серийности. Это
обстоятельство значительно
ограничивало возможности
применения данного семейства
российским производителями,
большинство из которых сейчас не
осуществляет больших объемов
выпуска.
В 1998 году компания Motorola начала
реализацию специальной программы
поставки микроконтроллеров,
ориентированной на производителей
продукции малой и средней
серийности. Эта программа,
получившая название “No Excuses”,
предполагает значительное
расширение поставок ряда моделей
микроконтроллеров семейства 68HC705 с
однократно-программируемым
внутренним ПЗУ, снижение их цены,
сокращение сроков поставки (до 1–2
недель), обеспечение пользователей
набором средств
программирования-отладки и
необходимой технической
информацией [2]. Микроконтроллеры
семейства 68HC705, включенные в
программу “No Excuses”, представляют
значительный интерес для
российских производителей
аппаратуры, так как их применение
обеспечивает технический и
экономический эффект для большой
номенклатуры изделий, начиная от
сравнительно простых устройств
широкого применения (детские
игрушки, кодовые замки, несложная
бытовая техника) и кончая
достаточно сложной измерительной и
телекоммуникационной аппаратурой,
системами промышленной автоматики,
автомобильной электроникой.
Обзор характеристик
микроконтроллеров семейства 68HC05/705
содержится в ранее опубликованных
работах [3,4]. Однако редакция
считает полезным более подробно
познакомить читателей с
архитектурой и функциональными
возможностями микроконтроллеров,
включенных в программу “No Excuses”. С
этой целью журнал начинает
публикацию цикла статей:
Содержание статей цикла
поможет читателям оценить
целесообразность применения
микроконтроллеров данной группы в
их разработках, выполнить
проектирование, программирование и
отладку аппаратуры н а базе этих
микроконтроллеров.
Микроконтроллеры семейства
68HC705 содержат на кристалле
8-разрядный процессор, внутреннюю
память, которая включает ОЗУ и
программируемое ПЗУ с однократной
записью, параллельные порты
ввода/вывода данных, ряд
периферийных устройств и
обслуживающих блоков (рис. 1).
Процессор выполняет
обработку 8-разрядных операндов и
реализует набор из 65 команд. Он
содержит пять программно-доступных
регистров: 8-разрядные аккумулятор
A, индексный регистр X, регистр
условий CCR, и 16-разрядные указатель
стека SP и программный счетчик PC, в
которых используется только часть
разрядов. Для адресации памяти
программ используются от 11 до 14
младших разрядов PC (в зависимости
от объема размещенной на кристалле
памяти), при этом старшие разряды
имеют значение “0”. Для стековой
памяти в ОЗУ выделяется 64 байта,
адресуемых шестью младшими
разрядами SP.
Регистр A используется для
хранения промежуточных данных.
Регистр X служит, в основном, для
формирования адреса, но в ряде
случаев является также
дополнительным местом размещения
операндов. Регистр CCR содержит
значения пяти признаков (рис. 1): C —
признак переноса; Z — признак
нулевого результата; N — признак
знака; I — признак разрешения
прерывания; H — признак переноса
между тетрадами (используется при
операциях над двоично-десятичными
числами).
Для управления процессором
служат внешние сигналы RESET# и IRQ#
(рис. 1). При поступлении сигнала
RESET#=0 происходит сброс всех
регистров микроконтроллера в
начальное состояние, а при
последующей установке RESET#=1
осуществляется запуск процессора
— начинается выполнение программы
с первой команды, адрес которой
хранится в ППЗУ в качестве вектора
начальной установки (рис. 2). Если
запуск процессора обусловлен
включением питания или сигналами
блока контроля функционирования COP,
то процессор сам устанавливает на
этом выводе значение сигнала RESET#=0,
информируя внешние устройства о
начале выполнения рабочей
программы. Сигнал IRQ#=0, поступающий
от внешних устройств, является
запросом прерывания программы.
Подробнее процедуры запуска и
обслуживания запросов прерывания
рассмотрены ниже. В процессе записи
содержимого во внутреннее ППЗУ
микроконтроллера на вывод IRQ#
подается напряжение
программирования Vpp = 16,5 В.
Распределение адресного
пространства внутренней памяти
показано на рис. 2. Младшие 32 адреса
используются для обращения к
регистрам блока программирования,
параллельных и последовательных
портов, таймера и других
периферийных устройств
микроконтроллера. Обращение к этим
регистрам осуществляется так же,
как к ячейкам памяти, путем
формирования соответствующего
адреса в адресном пространстве.
В адресном пространстве ОЗУ
располагаются ячейки стека,
которые имеют адреса в диапазоне
$00C0 – $00FF. Эти ячейки адресуются с
помощью указателя стека SP, в
котором десять старших разрядов
имеют постоянное значение 0000000011
(рис. 1). Шесть младших разрядов SP при
установке микроконтроллера в
начальное состояние принимают
значение 111111, поэтому в исходном
состоянии SP адресует ячейку ОЗУ с
адресом $00FF. После записи байта в
эту ячейку содержимое SP
уменьшается на 1, адресуя следующую
незаполненную ячейку стека. Таким
образом стек заполняется в
направлении уменьшения адресов.
При работе стека меняется значение
только шести младших разрядов SP,
поэтому объем стека ограничен 64
байтами. В случае переполнения
стека содержимое SP возвращается в
исходное состояние $00FF, после чего
цикл изменения его содержимого
повторяется.
Основной объем внутренней
памяти занимает
однократнопрограммируемое ПЗУ, в
которое записываются программы
пользователя. Часть ОППЗУ могут
занимать служебные программы,
выполняющие начальную загрузку,
тестирование и другие функции. Эти
программы записываются в процессе
изготовления микроконтроллеров
масочное программирование). В
микроконтроллерах серии B
содержится также
репрограммируемое ЭСППЗУ с
электрическим стиранием емкостью
256 бит. В микроконтроллерах 68HC705C8A,9A
обеспечивается возможность
изменения объема ОЗУ от 176 до 304 или
352 байт (табл. 1) за счет
соответствующего уменьшения
емкости ОППЗУ. Требуемый объем ОЗУ
устанавливается записью
определенных значений битов в
регистр, задающий режим работы
микроконтроллера.
Тип | Внутренняя память | Линии ввода/вывода | Корпус | Периферийные устройства |
Серия К: | ||||
68HC705KJ1 | ОЗУ - 64 бит ОППЗУ - 1,2 К |
10 | 16-DIP 16-SOIC |
таймер MFT, COP |
Серия J: | ||||
68HC705J1A | ОЗУ - 64 ОППЗУ - 1,2 Кбит |
14 | 20-DIP 20-SOIC |
таймер MFT, COP |
Серия P | ||||
68HC705P6A | ОЗУ - 176 бит ОППЗУ - 4,6 К |
20 + 1 вх | 28-DIP 28-SOIC |
таймерный блок, COP, послед.порт SIOP, 4-канальный АЦП |
Серия С: | ||||
68HC705C8A | ОЗУ - 176/304 бит ОППЗУ - 8К |
27 + 7 вх | 40-DIP 44-QFP 44-PLCC |
таймерный блок, COP,послед. порты SCI, SPI |
68HC705C9A | ОЗУ - 176/352 бит ППЗУ - 16К |
31 | -"- | -"- |
Серия B: | ||||
68HC705B16 | ОЗУ - 352 бит ОППЗУ - 15К ЭСППЗУ - 256 бит |
32 + 2 вых | 64-QFP 52-PLCC |
таймерный блок, COP, 8-канальный АЦП, 2 выхода ШИМ |
Серия L: | ||||
68HC705L16 | ОЗУ - 512 бит ОППЗУ - 16К |
16 + 8вх + 15вых | 80-QFP | 2таймерных блока, COP, базовый таймер, послед порт SSPI, драйвер ЖКИ |
Последние 16 байт адресного
пространства памяти служат для
хранения векторов начальной
установки и прерываний (рис. 3).
В адресном пространстве
внутренней памяти размещены также
служебные регистры, используемые
для управления режимом работы
микроконтроллера (option registers). Обычно
имеется от одного до трех таких
регистров, содержимое которых
определяет функционирование
различных устройств
микроконтроллера. Отдельные биты в
этих регистрах имеют следующее
назначение:
Кроме перечисленных, в
различных моделях
микроконтроллеров регистры
режимов имеют ряд битов,
определяющих режимы работы ГТИ,
портов ввода/вывода и некоторых
других устройств. Реально регистры
режимов являются ячейками ОППЗУ.
При программировании ОППЗУ в эти
ячейки записывается содержимое,
которое в дальнейшем может быть
только считано. Поэтому
установленные таким образом режимы
работы устройств микроконтроллера
далее остаются неизменными.
Различные модели
микроконтроллеров семейства
отличаются значениями емкости ОЗУ
(от 64 до 512 байт) и ОППЗУ программ (от
1,2 до 15 Кбайт), набором периферийных
устройств, количеством внешних
выводов. Функциональный состав
микроконтроллеров семейства 68HC705,
включенных в программу “No Excuses”,
приведен в табл. 1. В этой таблице
приведены также типовые значения
стоимости различных моделей для
россий-ских потребителей.
Для параллельного ввода/вывода
данных микроконтроллеры имеют от 2
до 4 портов, некоторые выводы
которых используются только в
качестве входов или выходов. Для
отдельных групп выводов
реализуется повышенная
нагрузочная способность по току —
до 8–10 мА. Общее число линий
ввода/вывода составляет от 10 до 39,
при этом микроконтроллеры серий K, J,
P, имеющие небольшое число таких
линий, размещаются в дешевых
корпусах с малым числом выводов.
Периферийные устройства выполняют
таймерные функции,
последовательный ввод/вывод
данных, аналого-цифровое
преобразование, формирование
сигналов с широтно-импульсной
модуляцией и некоторые другие
операции.
В большинстве моделей
используется таймерный блок,
который содержит 16-разрядный
таймер и схемы, фиксирующие время
поступления входных сигналов IC (input
capture) и формирующие в заданный
момент времени выходные сигналы OC
(output compare). В некоторых моделях
используется 15-разрядный
многофункцио-нальный таймер MFT,
который в заданные моменты времени
выдает запросы прерывания
процессора. Все микроконтроллеры
семейства 68HC705 имеют блок контроля
функционирования COP (computer operating
properly), который осуществляет
контроль в ыполнения текущей
программы и производит сброс
микроконтроллера в исходное
состояние (reset) в случае ее
“зависания” — нарушения
нормального хода программы или при
обращении по адресу,
неразрешенному для использования.
Микроконтроллеры серии L содержат
два таймерных блока и
дополнительный 14-разрядный базовый
таймер для формирования
периодических прерываний.
Для последовательного обмена
данными используются асинхронный
порт SCI (serial communication interface) или
синхронный порт SPI (serial peripheral interface).
Порт SIOP реализует асинхронный
последовательный обмен с более
ограниченными возможно-стями, чем
SCI, а порт SSPI является
модифицированным вариантом SPI.
Ряд моделей содержит на
кристалле 8-разрядный АЦП, имеющий 4
или 8 входных каналов. Некоторые
модели имеют широтно-импульсные
модуляторы (ШИМ), на выходах которых
генерируются последовательности
импульсов с программируемой
частотой и скважностью.
Микроконтроллеры серии L имеют
дополнительные выходы, к которым
подключаются специальные схемы
(драйверы ЖКИ), формирующие сигналы
управления жидкокристаллическими
индикаторами-дисплеями.
Подробно периферийные
устройства будут описаны в
следующей статье цикла.
Микроконтроллеры имеют
внутренний генератор тактовых
импульсов (ГТИ), для работы которого
к выводам OSC1,2 подключается
частотно-задающий кварцевый или
керамический резонатор (рис. 1) с
внешним или внутренним шунтирующим
резистором R. Частота формируемых
внутренних тактовых импульсов Ft =
Fr/2, где Fr — собственная частота
резонатора. Возможно также
подключение внешнего генератора
импульсов. Максимальная тактовая
частота Ft для рассматриваемых
микроконтроллеров составляет 2,1
МГц при Eп = 5,0 В и 1,0 МГц при Eп = 3,3 В.
Для моделей 68HC705KJ1, J1A, C8A имеются
модификации с повышенным значением
Ft — до 4,0 МГц при Eп = 5,0 В и 2,1 МГц при
Eп = 3,3 В.
В состав серий K и J входят
модели 68HRC705KJ1, 68HRC705J1A, в которых
вместо внешнего резонатора
используется RC-цепь. Для их
функционирования достаточно
подключить к выводам OSC1,2 внешний
или внутренний резистор R.
Внутренний резистор подключается
при программировании ОППЗУ путем
записи соответствующего бита в
регистр режима микроконтроллера.
При использовании внутреннего
резистора ГТИ вырабатывает
тактовые импульсы с частотой Ft от 1,5
МГц (при Eп = 3,3 В) до 2,5 МГц (при Eп = 5 В).
При подключении внешнего резистора
частота Ft зависит от его
сопротивления R, изменяясь от 4 МГц
при R = 5 кОм до 0,5–1,0 МГц при R = 500 кОм.
Микроконтроллеры
функционируют при напряжениях
питания Eп = 5 В или 3,3 В в расширенном
температурном диапазоне -40–+85°С (
модель 68HC705B16 имеет модификацию с
диапазоном -40–+85°C). В табл. 2
приведены типовые значения
мощности Pп, потребляемой
различными моделями
микроконтроллеров при указанной
максимальной тактовой частоте Ft в
рабочем режиме и режиме ожидания.
Так как микроконтроллеры
изготовлены по КМОП-технологии, они
имеют малое энергопотребление,
которое в рабочем режиме
составляет 3–6 мВт для Eп = 3,3 В и 17–30
мВт для Eп = 5 В. При снижении Ft
потребление мощности
пропорционально уменьшается.
Микроконтроллеры имеют режимы
ожидания и останова, при которых
обеспечивается пониженное
энергопотребление.
В режиме ожидания, который
реализуется после поступления
команды WAIT, прекращает работу
процессор, но продолжают
функционировать блок контроля COP,
таймер и последовательные порты
(если они есть). При этом
потребление мощности снижается в
2–5 раз (табл. 2). Выход из режима
ожидания происходит либо при
поступлении запросов прерывания от
внешних устройств, таймера или
последовательных портов, либо при
поступлении сигнала сброса в
начальное состояние от внешнего
устройства (вход RESET#) или от блока
контроля функционирования COP.
В режиме останова, который
реализуется после поступления
команды STOP, останавливается ГТИ, и
прекращается работа всех устройств
микроконтроллера. Типовое значение
потребляемого тока в этом режиме
составляет 1–5 мкА, а максимальное
значение не превышает 50 мкА. Выход
из режима останова происходит при
поступлении внешних сигналов
прерывания или сброса RESET#. При этом
требуется определенное время для
стабилизации тактовой частоты,
которое может достигать значения Ts
= 4064Tt.
Тип | En= 3,3 B | En= 5 B | ||
Ft, МГц | Pn, мВт | Ft, МГц | Pn, мВт | |
68HC705KJ1 | 1,0 2,1 |
4,0/1,0 4,6/1,0 |
2,1 4,0 |
20,0/5,0 26,0/5,5 |
68HC705J1A | 1,0 | 4,0/0,8 | 2,1 | 17,5/2,3 |
68HC705P6A | 1,0 | 5,9/3,3 | 2,1 | 20,0/10,0 |
68HC705C8A | 1,0 | 5,1/2,4 | 2,1 | 25,0/9,8 |
68HC705C9A | 1,0 | 3,3/1,7 | 2,1 | 17,5/5,0 |
68HC705B16 | 1,0 | 4,0/1,3 | 2,1 | 17,5/5,0 |
68HC705LI6 | 1,0 | 5,9/2,6 | 2,1 | 30,0/15,0 |
При поступлении команд WAIT и
STOP в регистре CCR устанавливается
значение признака I = 0, чтобы
разрешить последующий выход из
этих режимов по за-просам
прерывания.
В микроконтроллерах
68HC705KJ1,J1A,C8A,C9A реализуется режим
сохранения данных, который
устанавливается при подаче “0” на
вход RESET# и снижении напряжения
питания до значения Eп = 2,0 В. В этом
случае прекращается
функционирование всех устройств
микроконтроллера, но сохраняются
данные, записанные в ОЗУ и
регистрах. Потребляемая мощность
снижается до уровня нескольких
мкВт. Для возврата в рабочий режим
необходимо повысить Eп до
нормального уровня (3,3 или 5,0 В) и
установить значение “1” на входе
RESET#.
Процессор выполняет набор
операций над операндами,
размещенными в регистрах A, X и
памяти. Команды имеют длину от 1 до 3
байтов: первый байт содержит код
операции, второй и третий байты
обеспечивают адресацию операнда.
Для выборки операнда используются
следующие способы адресации:
При косвенно-регистровой и
прямой адресации с 8-разрядным
адресом обращение возможно только
к 256 начальным позициям адресного
пространства (рис. 2), в котором
располагаются регистры устройств
микроконтроллера и основная часть
ОЗУ. При индексной адресации
смещение является числом без знака.
Поэтому при 8-разрядном смещении
адресуются 512 начальных позиций
адресного пространства. Данные
способы адресации будем называть
короткими. Индексная адресация с
16-разрядным смещением и прямая с
16-разрядным адресом позволяют
обращаться к любой позиции
адресного пространства. Эти
способы адресации будем называть
длинными. При относительной
адресации возможен переход к
командам, расположенным в пределах
127 позиций ниже или выше очередной
команды программы.
Выполняемые процессором
команды делятся на группы команд
пересылки, арифметических и
логических операций, сдвигов,
битовых операций и установки
признаков, управления программой и
процессором. В набор команд входят
безадресные и одноадресные
команды. В одноадресных командах
задается адрес используемого
операнда или размещения
результата. В табл. 3–9 после
мнемокода этих команд указывается
символ (opr), адресуемый таким
образом операнд обозначается
символом M. При непосредственной
адресации после мнемокода команды
записывается операнд # Im.
Команды пересылки (табл. 3)
осуществляют загрузку операндов из
памяти в регистры A, X или запись
содержимого этих регистров в
память. При загрузке (команды LDA, LDX)
используются все способы
адресации, кроме относительного,
при записи в память (команды STA, STX)
не используется также
непосредственная адресация.
Команды TAX, TXA выполняют передачу
операндов между регистрами A, X. К
этой же группе относятся команды
CLRA, CLRX, CLR, производящие запись “0” в
регистры A, X и ячейку памяти,
выбираемую с помощью коротких
способов адресации.
Мнемокод | Команда | Операция |
LDA (opr) LDX (opr) |
Загрузка А Загрузка Х |
М ->A M ->X |
STA (opr) STX (opr) |
Запись А в память Запись Х в память |
A - >M X >M |
TAX TXA |
Пересылка А в Х Пересылка Х в А |
А ->X X ->A |
CLR (opr) CLRA CLRX |
Запись 0 в М Запись 0 в А Запись 0 в Х |
$00 ->M $00 ->A $00 ->X |
Команды арифметических
операций (табл. 3) выполняют
соответствующие действия над
операндами, один из которых
располагается в аккумуляторе A, где
размещается затем результат. При
операциях сложения и вычитания с
учетом и без учета признака
переноса C (команды ADC, ADD, SBC, SUB)
второй операнд M адресуется любым
способом, кроме относительного. При
операциях инкремента, декремента
(команды INC, INCA, INCX, DEC, DECA, DECX) и
изменения знака (перевод в
дополнительный код, команды NEG, NEGA,
NEGX) используются только короткие
способы адресации. Команда
умножения MUL выполняется над
8-разрядными операндами без знака,
расположенными в регистрах A, X,
16-разрядное произведение
размещается в этих же регистрах
(старший байт в X, младший байт в A).
Операция деления процессором не
производится. Команды сравнения CMP,
CPX выполняют вычитание операндов
без записи результата, но с
установкой значений признаков N, Z, C
в соответствии с полученным
результатом. К оманды тестирования
TST, TSTA, TSTX устанавливают признаки N, Z
в соответствии со значением
выбираемого операнда.
Мнемокод | Команда | Операция | ||||||||||||||||||
ADD (opr) ADC (opr) SUB (opr) SBC (opr) |
Сложение Сложение с переносом Вычитание Вычитание с заемом |
A + M ->A A + M+ C ->A A - M ->A A - M - C ->A |
||||||||||||||||||
|
|
|
||||||||||||||||||
NEG (opr) NEGA NEGX |
Изменение знака М Изменение знака А Изменение знака Х |
0 - M ->M 0 - A ->A 0 - X ->X |
||||||||||||||||||
|
|
|
||||||||||||||||||
MUL | Беззнаковое умножение | A x X ->X : A | ||||||||||||||||||
AND (opr) OR (opr) EOR (opr) |
Логическое И Логическое ИЛИ Исключающее ИЛИ |
A ^ M ->A A M ->A A + M - >A |
||||||||||||||||||
COM (opr) COMA COMX |
Логическая инверсия
М Логическая инверсия А Логическая инверсия Х |
M -> M A -> A X -> X |
||||||||||||||||||
BIT (opr) | Битовое тестирование | A ^ M |
К этой группе относятся также
команды AND, ORA, EOR (табл. 4), которые
выполняют логические операции И,
ИЛИ, Исключающее ИЛИ над разрядами
содержимого аккумулятора A и
адресуемого операнда. При
выполнении этих команд
используются такие же способы
адресации, как в командах
сложения-вычитания. В командах
логической инверсии COM, COMA, COMX
используются только короткие
способы адресации. Команда
битового тестирования BIT
производит логическое умножение
операндов (операция И) без записи
результата, но с установкой
признаков N, Z.
Команды сдвигов (табл. 5)
выполняют арифметические (команды
ASL, ASLA, ASLX, ASR, ASRA, ASRX), логические
(команды LSL, LSLA, LSLX, LSR, LSRA, LSRX) и
циклические (команды ROL, ROLA, ROLX, ROR,
RORA, RORX) сдвиги над операндами,
расположенными в регистрах A, X или
позициях памяти, выбираемой с
помощью коротких способов
адресации. Отметим, что команды ASL,
ASLA, ASLX реализуют такие же операции,
как и LSL, LSLA, LSLX.
Мнемокод | Команда | Операция |
ASL, LSL (opr) ASLS, LSLA ASLX, LSLX |
арифметический, логический сдвиг влево |
|
ASR (opr) ASRA ASRX |
арифметический сдвиг вправо |
|
LSR (opr) LSRA LSRX |
логический сдвиг вправо |
|
ROL (opr) ROLA ROLX |
циклический сдвиг влево |
|
ROR (opr) RORA RORX |
циклический сдвиг вправо |
Команды битовых операций BCLR,
BSET (табл. 6) устанавливают значение
“0” или “1” для n-го бита в
операнде, 8-разрядный адрес
которого содержится во втором
байте команды (прямая адресация).
Номер бита n задается в команде.
Команды CLC, CLI и SEC, SEI устанавливают
значение “0” или “1” признаков C, I
в регистре условий CCR. При этом
команды CLI и SEI разрешают и
запрещают обслуживание всех
поступающих запросов прерывания.
Мнемокод | Команда | Операция | ||||||||||||
BCLR n,(opr) BSET n,(opr) |
установка значения
бита bn=0 установка значения бита bn=1 |
0 -> bn 1 -> bn |
||||||||||||
|
|
|
При выполнении команд пересылки,
арифметических и логических
операций, сдвигов, битовых операций
устанавливаются значения
признаков в регистре условий CCR. В
табл. 7 показано изменение этих
признаков:
“+” — установка значения по
результату операции,
“–” — значение остается
неизменным,
“0”, “1” — установка
соответствующих значений
признаков.
Команды | Признаки | ||||
H | I | N | Z | C | |
LDA, LDX, STA, AND, ORA, EOR, BIT, INC, INCA, INCA, INCX, DEC, DECA, DECX |
- | - | + | + | - |
ADD, ADDC | + | - | + | + | + |
SUB, SBC, NEG, CMP, CPX, ASL, ASLA, ASLX, LSL, LSLA, LSLX, ASR, ASRA, ASRX, ROL, ROLA, ROLX, ROR, RORA, RORX |
- | - | + | + | + |
LSR, LSRA, LSRX | - | - | 0 | + | + |
CLR, CLRA, CLRX | - | - | 0 | 1 | - |
COM, COMA, COMX | - | - | + | + | 1 |
STX, TST, TSTA, TSTX | - | - | + | + | 0 |
MUL | 0 | - | - | - | 0 |
CLC | - | - | - | - | 0 |
CLI | - | 0 | - | - | - |
SEC | - | - | - | - | 1 |
SEI | - | 1 | - | - | - |
SWI | - | 1 | - | - | - |
RTI | + | + | + | + | + |
BRCLR, BRSET | - | - | - | - | + |
WAIT, STOP | - | 0 | - | - | - |
Для управления выполнением
программы используются команды
безусловного перехода JMP, условных
и безусловных ветвлений: Bсс, BRCLR, BRSET
и BRA, BRN, перехода и ветвления к
подпрограмме: JSR, BSR, возврата из
подпрограммы RTS, программного
прерывания SWI, возврата из
прерывания RTI (табл. 8). Команда JMP
загружает в программный счетчик PC
адрес следующей команды из ячейки
памяти, выбираемой любым способом,
кроме относительной адресации.
Мнемокод | Команда | Операция |
JMP (opr) Bcc d8 |
Безусловный переход Условное ветвление |
EA -> PC PC +d8 -> PC, если СС=1 |
BRA d8 BRN d8 |
Безусловное
ветвление Отсутствие ветвления |
PC + d8 -> PC PC + 2 -> PC |
BRCLR n,(opr), d8 BRSET n, (opr), d8 |
Ветвление при bn=0 Ветвление при b=1 |
PC + d8 -> PC, если bn=0 PC +d8 -> PC, если bn=1 |
JSR (opr) | Переход к подпрограмме | PC + n -> PC PCI ->(SP), SP - 1 ->SP, PCh ->(SP), SP - 1 ->SP, (EA) -> PC |
BSR d8 | Ветвление к подпрограмме | PC + 2 ->PC, PCI ->(SP), SP - 1 ->SP PCh ->(SP), SP - 1 ->SP, PC + d8 -> PC |
RTS | Возврат из подпрограммы | SP + 1 ->SP, (SP) -> PCh, SP + 1 ->SP, (SP) -> PCh |
SWI | Программное прерывание | PC + 1 ->PC, PCI ->(SP), SP - 1 ->SP, PCh ->(SP), SP - 1 ->SP, X ->(SP), SP - 1 ->SP, A ->(SP), SP - 1 ->SP, CCR ->(SP), SP - 1 ->SP, Ve -> PC, 1 ->I |
RTI | Возврат из прерывания | SP + 1 ->SP, (SP) -> CCR, SP + 1 ->SP, (SP) -> A, SP + 1 ->SP,(SP) ->X, SP + 1 ->SP, (SP) ->PCh, SP + 1 ->SP, (SP) ->PCI, 0 ->I |
RSP | Сброс регистра SP | $00FF -> SP |
NOP | Отсутствие операций | PC + 1 ->PC |
WAIT | Переход в режим ожидания | Остановка процессора, 1 -> I |
STOP | Переход в режим останова | Останова ГТИ, 1 -> I |
Команды ветвления используют
только относительный способ
адресации. Команды условного
ветвления Bcc производят загрузку в
PC нового адреса, если условие cc
имеет значение “1”. В табл. 9
приведены 16 видов условий, которые
вызывают ветвление программы.
Помимо определенных значений
признаков условием ветвления может
быть поступление внешнего запроса
прерывания на вход IRQ#. Мнемокод
условия приписывается к букве B,
образуя мнемокод соответствующей
команды условного ветвления,
например, B + PL = BPL — мнемокод
команды ветвления при
положительном результате
предыдущей операции (признак N = 0).
Команды BRCLR, BRSET проверяют значение
n-го бита в операнде, выбираемом с
помощью короткой прямой адресации,
и выполняют ветвление, если bn равен
“0” или “1”. Значение n задается
непосредственно в этих командах: #im8
= n. Команда BRA осуществляет
безусловное ветвление, то есть
эквивалентна команде JMP с
относительной адресацией. Команда
BRN пропускает два байта в
выполняемой программе.
Мнемокод | Проверяемое условие | Значение cc |
NE EQ |
не равно (ненулевой
результат) равно (нулевой результат) |
Z = 0 Z = 1 |
HI HS |
выше ниже или равно |
(Z + C) = 0 (Z + C) = 1 |
HS LO |
выше или равно (нет
переноса) ниже (есть перенос) |
C = 0 C = 1 |
PL MI |
положительный
результат отрицательный результат |
N = 0 N = 1 |
HCC HCS |
нет переноса между
тетрадами есть перенос между тетрадами |
H = 0 H = 1 |
MC MS |
прерывания
разрешены прерывания запрещены |
I = 0 I = 1 |
IH IL |
отсутствие запроса
прерывания поступление запроса прерывания |
IRQ# = 1 IRQ# = 0 |
Команды перехода и ветвления
к подпрограмме JSR, BSR заносят из PC в
стек адрес следующей команды
программы, а затем загружают в PC
новое содержимое. В команде JSR адрес
EA ячейки, из которой загружается PC,
определяется выбранным способом
адресации возможен любой способ,
кроме регистрового и
относительного). Длина команды JSR
может составлять n = 1, 2 или 3 байта,
поэтому загружаемый в стек адрес
следующей команды равен PC + n. В
команде BSR адрес первой команды
подпрограммы определяется с
помощью относительной адресации.
По команде возврата из
подпрограммы RTS из стека
восстанавливается прежнее
содержимое PC.
Команда программного
прерывания SWI загружает в стек
текущее содержимое PC и содержимое
основных регистров: A, X, CCR. При
выполнении этой команды
заполняется пять ячеек стека. Затем
в PC заносится адрес первой команды
подпрограммы обслуживания
прерывания (вектор прерывания Ve) и
устанавливается значение признака
I = 1, запрещающего последующее
прерывание. Команда возврата из
прерывания RTI восстанавливает
прежнее содержимое регистров A, X, CCR,
PC из стека и разрешает последующее
прерывания, устанавливая значение
признака I = 0.
Для управления процессором
служат команда RSP, устанавливающая
в регистре SP начальное значение $00FF,
команда NOP, не выполняющая
каких-либо операций (пропуск байта),
и команды WAIT, STOP, переводящие
микроконтроллер в
энергосберегающие режимы ожидания
и останова с разрешением
прерывания (установка в регистре CCR
признака I = 1) для последующего
возврата в рабочий режим.
Установка начального
состояния микроконтроллера
(процедура запуска RESET)
производится в следующих случаях:
В процессе начальной
установки в программный счетчик PC
из ячеек ОППЗУ, расположенных в
последних ячейках адресуемой
памяти (рис. 3), поступает вектор
запуска Ve — адрес первой команды
программы, выполняемой
микроконтроллером. При включении
питания требуется время Ts = 4064Tt для
запуска ГТИ и установки начального
состояния регистров, после чего
начинается нормальная работа
микроконтроллера. Некоторые модели
позволяют запускать ГТИ с меньшим
временем Ts = 128Tt или 16Tt, что
обеспечивается при записи
определенных управляющих битов в
регистре режима. Для начальной
установки по сигналу RESET#=0 его
длительность должна быть не менее
2Tt. Сигналы сброса в начальное
состояние от блока COP поступают при
выявлении определенных видов сбоев
в работе микроконтроллера
(подробнее работа блока контроля COP
будет рассмотрена в следующей
статье цикла).
Микроконтроллеры семейства
68HC705 реализуют одно программное
(команда SWI) и от двух до шести
аппаратных прерываний. При
реализации прерывания в стек
загружается содержимое основных
регистров процессора в следующей
последовательности CCR–A–X–PCh–PCl,
где PCh, PCl — старший и младший байты
содержимого PC. После этого в PC
загружается вектор прерывания Ve —
адрес первой команды подпрограммы
обслуживания. Значения Ve
содержатся в ячейках ОППЗУ,
расположенных в последних 16 байт
адресного пространства (рис. 3).
Выполнение подпрограммы
обслуживания завершается при
поступлении команды возврата из
прерывания RTI, которая выбирает из
стека и восстанавливает содержимое
регистров PC, X, A, CCR, обеспечивая
продолжение прерванной программы.
Программное прерывание
реализуется при поступлении
команды SWI, выполнение которой
описано выше. Аппаратные
прерывания вызываются внешними
сигналами, поступающими на
соответствующие входы
микроконтроллера, и запросами
периферийных устройств: таймера,
последовательных портов.
Аппаратные прерывания являются
маскируемыми — их обслуживание не
выполняется при установке признака
I = 1 в регистре CCR. Команда SWI
выполняется при любом значении
признака I.
На рис. 3. показано размещение в
ОППЗУ векторов запуска и
прерывания Ve для рассматриваемых
моделей микроконтроллеров, где
символом Y обозначен адрес
последней ячейки адресного
пространства (Y = 11...11).
Внешними запросами
прерывания являются сигналы,
поступающие на вход IRQ#
(микроконтроллер 68HCL16 имеет два
входа IRQ#). В качестве
дополнительных входов прерывания в
ряде моделей можно использовать
некоторые выводы портов (PA3-0 порта A
для 68HC705KJ1,J1A; PA7-0 порта A для 68HC705P6A;
PB7-0 порта B для 68HC705C8A,C9A), если
установить соответствующие
значения управляющих битов в
регистрах режимов. В этих моделях
общее число входов прерывания
можно увеличить до 5 или 9. Некоторые
модели микроконтроллеров (68HCKJ1,J1A,L16)
имеют специальные регистры для
управления внешними прерываниями,
отдельные биты которых
устанавливают и сбрасывают
признаки поступления запросов
прерывания, разрешают или
запрещают их обслуживание.
Специальный бит LEVEL в одном из
регистров режима определяет вид
внешних сигналов, вызывающих
прерывания: отрицательный перепад
потенциала при LEVEL=0, уровень “0”
при LEVEL=1 (в некоторых моделях
используются другие обозначения
этого бита). Если прерывание
вызывается перепадом потенциала,
то по-сле его обслуживания
следующее прерывание происходит
только при поступлении нового
перепада. Если прерывание
вызывается уровнем, то при
сохранении на входе запроса уровня
“0” микроконтроллер повторяет
выполнение подпрограммы
обслуживания, пока не установится
уровень “1”. В моделях 68HC705KJ1,J1A
прерывания со входов PA3-0 вызываются
положительным перепадом
потенциала или уровнем “1”; в
модели 68HC705P6A можно установить
любой вид сигнала прерывания IRQ:
положительный или отрицательный
перепад, уровень “0” или “1”.
Формирование внутренних
запросов прерывания от
периферийных устройств
микроконтроллера: таймеров,
последовательных портов, будет
рассмотрено в следующей статье
цикла.
Поступление внешних или
внутренних запросов проверяется
микроконтроллером после
выполнения каждой команды
программы. Если поступило
нескольких запросов, то в первую
очередь обслуживается запрос с
более высоким приоритетом. Запросы
имеют фиксированные приоритеты.
Высший приоритет установлен для
внешних сигналов IRQ#, затем
приоритеты запросов
по-следовательно снижаются в
соответствии с уменьшением адреса
вектора прерываний Ve (снизу вверх
на рис. 3).
В данной статье рассмотрены
общие вопросы функционирования
микроконтроллеров, характерные для
всех представителей данного
семейства. Следующая статья цикла
будет посвящена описанию
размещаемых на кристалле
периферийных устройств, набор
которых является специфичным для
каждой из моделей
микроконтроллеров, определяя
наиболее перспективные области ее
применения.
Литература
Published by NewIT Labs